머신러닝(ML) 전략이 필요한 이유는?

교수님이 좋아하시는 고양이 인식 프로그램을 만든다고 해보자. 정확도가 90%에 도달했지만 아직 내가 원하는 수준이 아닐 경우 다음과 같은 방법을 이용해 성능을 개선할 수 있다.

  • 더 많은 데이터 모으기
  • 더 다양한 종류의 데이터(다른 자세의 고양이 등) 모으기
  • 경사하강법으로 더 오래 학습시키기
  • 경사하강법 대신 Adam 사용하기
  • 더 큰 신경망 사용하기
  • 더 작은 신경망 사용하기
  • Dropout 사용하기
  • $L_2$ 정규화 사용하기
  • 신경망 구조 고려하기(활성함수, 은닉층의 개수 등)

그러나 어떤 항목이 내가 원하는 효과를 불러올지는 알 수 없다. 해결책을 잘못 선택한다면 오히려 시간만 버리는 결과를 가져올 것이다. 따라서 머신러닝 전략을 이용해 내가 원하는 결과가 도출되지 않은 원인을 파악하고, 그 원인에 맞는 해결책을 선택하는 것이 중요하다.


직교화

버튼이 여러 개 달린 아날로그 TV를 생각해보자. 각각의 버튼은 화면의 높이, 넓이, 모양, 좌우 위치, 회전 각도를 조정한다. 우리는 이 버튼들을 이용해 시청하기 좋은 화면을 만들 수 있다. 그런데 이 버튼들이 독립적으로 작동하지 않는다면 어떨까? 예를 들어 높이 버튼을 0.1만큼 조정하면 넓이는 0.3, 모양은 1.7, 좌우 위치는 0.8만큼 동시에 같이 조정되는 것이다. 이러한 상황에서는 우리가 원하는 화면을 얻기기 어려울 것이다.

다른 예시로 자동차도 생각해보자. 자동차를 운전하기 위해서는 핸들, 엑셀, 브레이크를 적절히 조절해야 한다. 각각을 독립적으로 조절할 때 원활한 운전을 할 수 있다. 만약 핸들을 0.3 만큼 돌렸는데 동시에 속도가 줄고 브레이크가 걸린다면 안전운전은 불가능하다.

각각의 요소들이 독립적으로 작용하도록 하는 것을 직교화라고 한다.

다음은 머신러닝 모델 개발 각각의 단계에서 적용할 수 있는 해결책이다.

순번 단계 해결책
1 Training set 과정 더 큰 신경망, Adam
2 Dev set 과정 정규화, 더 큰 Training set
3 Test set 과정 더 큰 Dev set
4 실제 현실 적용 Dev set 변경, 비용함수 수정

각각의 해결책은 서로 독립적이며, 서로가 서로에게 영향을 주지 않는다.

참고로, 조기 종료는 1번 단계와 2번 단계에 동시에 영향을 주게 된다. 직교화가 덜 된 방법이라는 뜻이다. 따라서 조기 종료는 많이 쓰이는 방법이긴 하나, 사용은 딱히 추천하지 않는다.

위 표가 뜬금 없이 나와서 당황했을 수 있다. 앞으로의 강의를 통해서 위 표의 자세한 내용을 하나씩 공부할 예정이라고 한다.

댓글남기기